package demo7;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * Spring容器管理对象时候，一个生命周期
 */
@Component
public class Person {
    private String name;

    public Person() {
        System.out.println("1、Person()的构造器被调用了");
    }

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
    @Value("小明")
    public void setName(String name) {
        System.out.println("2、setName()方法被调用了,初始化了name属性");
        this.name = name;
    }
    public void play() {
        System.out.println("4、play()方法被调用了"+name+"出去玩去了");
    }

    /**
     * Spring容器创建对象(构造完毕)之后，调用此方法
     */
    @PostConstruct
    public void init() {
        System.out.println("3、init()方法被调用了");
    }
    /**
     * Spring容器销毁对象之前调用此方法
     */
    @PreDestroy
    public void destroy() {
        System.out.println("5、容易要关闭了，通知当前对象，只要有 @PreDestroy注解，那么会执行有这个的说有方法执行，这里输出的就是这个带注解的方法的输出");
    }

    /**
     * 这个才是临终一言
     */
    public void finalize() {
        System.out.println("6、initMethod()方法被调用了");
    }
}
